package com.jc.order.dto;

import com.jc.order.util.DTOCompareUtil;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 赊销申请表对象
 */
@Data
public class EciCustomerSaleApplyDTO {


    // 基础信息
    @DTOCompareUtil.IgnoreCompare
    private Long id;
    @DTOCompareUtil.IgnoreCompare
    private Long tenantId;


    /**
     * 请求方业务流水号（必录）
     */
    private String corpSerialNo;


    /**
     * 操作类型
     * NEW: 新申请
     * MODIFY: 限额修改
     */
    @DTOCompareUtil.IgnoreCompare
    private String operationType;

    /**
     * 出货日（必录），格式：yyyy-MM-dd
     * 出货日应在保单生效日期之后   保单生效日期（2025-06-29）
     * 出货日 应在当前日之前
     * 非证交易按出货日填写，
     * <p>
     * 信用证交易按提交单据日填写
     */
    @DTOCompareUtil.FieldDesc("出货日")
    private Date happenDate;

    /**
     * 发票日期（非必录），格式：yyyy-MM-dd
     */
    @DTOCompareUtil.FieldDesc("发票日期")
    private Date happen2Date;


    // 买方信息字段
//    /** 买方名称（必录），长度：300 */
//    private String riskName;
    /**
     * 买方picccode（必录），长度：22
     */
    @DTOCompareUtil.FieldDesc("买方picccode")
    private String riskPiccCode;
//    /** 买方地址（必录），长度：180 */
//    private String riskCompAddress;


    /**
     * 商品数量及单位（非必录），长度：30
     */
    @DTOCompareUtil.FieldDesc("商品数量及单位")
    private String productNum;

    // 交易信息字段
    /**
     * 信用起始日（必录），格式：yyyy-MM-dd
     * 信用期限起始日应晚于出货日（可为出货日当天）
     * <p>
     * 信用期限起始日应晚于出货日最长不能超过30天！
     */
    @DTOCompareUtil.FieldDesc("信用起始日")
    private Date startDate;
    /**
     * 应回款日期（非必录）
     */
    @DTOCompareUtil.FieldDesc("应回款日期")
    private Date accrualDate;
    /**
     * 提交单据日（必录），格式：yyyy-MM-dd（LC/LCOA必录）
     * <p>
     * 提交单据日不得早于出货日
     */
    @DTOCompareUtil.FieldDesc("提交单据日")
    private Date comitFormDate;
    /**
     * 开证行Swift码（必录），长度：150（LC/LCOA必录）
     */
    @DTOCompareUtil.FieldDesc("开证行Swift码")
    private String bankSwift;
    /**
     * 币种（必录），长度：50（外贸必填）
     */
    @DTOCompareUtil.FieldDesc("币种")
    private String currency;
    /**
     * 运输方式（非必录），长度：50
     */
    @DTOCompareUtil.FieldDesc("运输方式")
    private String transportMode;
    /**
     * 国家和地区（必录），长度：50（内贸非必填，外贸必填）
     */
    @DTOCompareUtil.FieldDesc("国家和地区")
    private String countryOrArea;
    /**
     * 海关商品代码（必录），长度：40（内贸非必填，外贸必填）
     */
    @DTOCompareUtil.FieldDesc("海关商品代码")
    private String customsCode;
    /**
     * 赊销金额（必录），小数点后最多两位
     */
    @DTOCompareUtil.FieldDesc("赊销金额")
    private BigDecimal xamInvoiceAmout;
    /**
     * 回款日期（非必录）
     * 确认收汇金额 有值  必填
     */
    @DTOCompareUtil.FieldDesc("回款日期")
    private Date recoverDate;
    /**
     * 信用期限（必录），赊销天数
     */
    @DTOCompareUtil.FieldDesc("信用期限")
    private Integer paymentTerms;
    /**
     * 发票号（必录），长度：100（唯一且有管控）
     */
    @DTOCompareUtil.FieldDesc("发票号")
    private String contractNo;
    /**
     * 费率计算标准（必录），长度：20（外贸必填，值：LC/LCOA/OA/DP/DA）
     */
    @DTOCompareUtil.FieldDesc("费率计算标准")
    private String contractPayment;
    /**
     * 确认收汇金额（非必录），不能大于赊销金额
     */
    @DTOCompareUtil.FieldDesc("确认收汇金额")
    private BigDecimal xamRecoverAmount;

    // 商品类别信息
    /**
     * 内贸选择的商品类别（必录），长度：200（多选用英文分号分隔，如"1;3;16"）
     */
    @DTOCompareUtil.FieldDesc("内贸选择的商品类别")
    private String exportTrade;
    /**
     * 商品类别备注（必录），长度：50（商品类别包含"其他"时必填）
     */
    @DTOCompareUtil.FieldDesc("商品类别备注")
    private String exportTradeInput;
    /**
     * 是否为出口前（非必录），0：出口后；1：出口前
     */
    @DTOCompareUtil.FieldDesc("是否为出口前")
    private String isAdditionalRisk;
    /**
     * 备注（非必录），长度：300
     */
    @DTOCompareUtil.FieldDesc("备注")
    private String remark;


    /**
     * 数据状态：1.待申请，10.已提交，20.待批复，30.已通过，100.已拒绝
     */
    private String dataStatus;


    /**
     * 创建时间
     */
    @DTOCompareUtil.IgnoreCompare
    private Date createTime;

    /**
     * 更新时间
     */
    @DTOCompareUtil.FieldDesc("更新时间")
    private Date updateTime;

    /**
     * 创建人
     */
    @DTOCompareUtil.IgnoreCompare
    private String createUser;

    /**
     * 更新人
     */
    @DTOCompareUtil.FieldDesc("更新人")
    private String updateUser;


    private BigDecimal rate;

    private BigDecimal premium;
}